# MD2PPT Makefile - 常用操作快捷命令

.PHONY: help install test clean api sync-apifox dev docs build

# 默认显示帮助
help:
	@echo "MD2PPT 开发和部署工具"
	@echo ""
	@echo "常用命令:"
	@echo "  install       安装项目依赖"
	@echo "  test          运行测试套件"
	@echo "  api           启动 API 服务器"
	@echo "  sync-apifox   同步 API 到 Apifox"
	@echo "  dev           开发模式启动"
	@echo "  docs          生成文档"
	@echo "  clean         清理临时文件"
	@echo "  build         构建发布包"
	@echo ""
	@echo "示例:"
	@echo "  make install          # 安装所有依赖"
	@echo "  make api              # 启动 API 服务"
	@echo "  make sync-apifox      # 同步到 Apifox"

# 安装依赖
install:
	@echo "📦 安装 MD2PPT 依赖..."
	pip install -e .[all]
	@echo "✅ 依赖安装完成"

# 运行测试
test:
	@echo "🧪 运行测试套件..."
	pytest tests/ -v
	@echo "✅ 测试完成"

# 启动 API 服务器
api:
	@echo "🚀 启动 MD2PPT API 服务器..."
	python -m uvicorn api.app:app --host 0.0.0.0 --port 8001 --reload

# 同步 API 到 Apifox
sync-apifox:
	@echo "🔄 同步 API 到 Apifox..."
	./sync_to_apifox.sh

# 开发模式
dev:
	@echo "🛠️ 启动开发模式..."
	python -m uvicorn api.app:app --host 0.0.0.0 --port 8001 --reload --log-level debug

# 生成文档
docs:
	@echo "📖 生成项目文档..."
	python -c "
import subprocess
import webbrowser
import time

# 启动 API 服务器获取文档
proc = subprocess.Popen(['python', '-m', 'uvicorn', 'api.app:app', '--port', '8001'])
print('等待服务器启动...')
time.sleep(3)

# 打开文档页面
webbrowser.open('http://localhost:8001/docs')
print('API 文档已在浏览器中打开')
print('按 Ctrl+C 停止服务器')

try:
    proc.wait()
except KeyboardInterrupt:
    proc.terminate()
    print('服务器已停止')
"

# 清理临时文件
clean:
	@echo "🧹 清理临时文件..."
	find . -type f -name "*.pyc" -delete
	find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
	find . -type f -name "*.log" -delete
	rm -rf build/ dist/ *.egg-info/
	rm -rf .pytest_cache/
	rm -rf test_data/outputs/*.mp4 test_data/outputs/*.mp3 test_data/outputs/*.html
	@echo "✅ 清理完成"

# 构建发布包
build:
	@echo "📦 构建发布包..."
	python -m build
	@echo "✅ 构建完成，文件位于 dist/ 目录"

# 集成测试
integration-test:
	@echo "🔬 运行集成测试..."
	python test_integration_complete.py
	@echo "✅ 集成测试完成"

# 功能展示
showcase:
	@echo "🎬 运行功能展示..."
	python -m md2ppt test_data/markdown/quick_showcase.md --format all --enable-animations --verbose
	@echo "✅ 功能展示完成"

# 快速开始 - 一键设置开发环境
quickstart:
	@echo "⚡ 快速设置 MD2PPT 开发环境..."
	make install
	make test
	make sync-apifox
	@echo "🎉 开发环境设置完成！"
	@echo ""
	@echo "下一步:"
	@echo "  make api          # 启动 API 服务"
	@echo "  make showcase     # 查看功能演示"